Report Server - Agregações

O conceito


Podemos exibir um relatório que, no seu modelo mais básico não passa de uma tabela com dados com colunas de cabeçalho e linhas, correspondentes as colunas de cabeçalho, com os dados do relatório.

Tá bom para um Excel, mas o report server foi criado para fazer relatórios bem mais sofisticados e o segredo é como fazê-los.

No relatório acima suponha que queremos agrupar os produtos por 'Sub-Categoria do Produto', ou seja, pelo 'Tipo do produto'. Fazendo isto aparecerá uma linha apenas com o tipo do produto x e em todas as demais linhas com dados essa 'coluna' referente ao 'tipo do dado' virá em branco indicando que é o mesmo citado logo acima.

O fundamento

As agregações são a base dos agrupamentos dos itens do relatório. Agrupando por 'tipo do produto' podemos fazer o relatório mencionado acima

Contudo o agrupamento no Report Server é um agrupamento visual e não um agrupamento pela associação do valor da coluna como é no SQL Server.

O agrupamento feito pelo SQL Server

Primeiramente o agrupamento obriga você a colocar as colunas numa 'hierarquia' de agrupamento e, no sql, você tem que agrupar todas as colunas de dados tipo:

select tipo, marca, [custo de compra], [valor de venda],cor
from Estudos_E_Modelos.[dbo].[Produtos]
group by tipo,marca, [custo de compra], [valor de venda],cor

E o relatório ele ficaria assim :

Ficou bem melhor, o group by não só agrupou os itens bem como ordenou...então boné veio antes de bota que veio antes de camisa. Mas tome cuidado, se 2 colunas tivessem um valor null elas seriam eliminados e se tivessem os mesmos valores de colunas esses valores seriam somados, lógicamente, isto no report server.

O agrupamento visual no Report Server

O agrupamento visual é uma quebra feita pelo Report Server baseada no valor de um campo. Por exemplo, na lista acima eu tenho um monte do mesmo tipo de produto ( por exemplo, Boné )

O report server permite fazer o 'Agrupamento Visual' por linhas ou colunas e, a partir desse agrupamento, aplicar uma 'regra visual' que permite que eu 'omita um campo repetitivo' ou mesmo 'crie uma quebra' colocando o 'total parcial' daquele valor de campo específico, ou seja, por exemplo um total por tipo de produto.

Como fica o agrupamento visual feito no Report Server

No exemplo acima temos uma tabela agrupada pelo tipo do produto. Sendo assim temos 3 marcas de boné : Hering, Osklen e Reserva que foram agrupadas em apenas um 'tipo de produto' chamado 'boné' e as colunas 'Custo de Compra', 'Valor de Venda' são os valores desses campos para o produto mas podemos colocar também a somatória dos campos desse item.

Os arranjos que podem ser feitos são incontáveis, mas alguns são importantes conhecer. O primeiro deles é exibir apenas a primeira linha do elemento agrupado.

Para fazer esse efeito :
• 1 - Eu fui no box 'Row Groups', selecionei a linha detalhe (1).
• 2 - Cliquei nele com o botão direito do mouse e selecionei o item 'Group Properties'.
• 3 - Fui na aba 'Visibility' e selecionei a opção 'Hide' no box 'when the report is initially run'(2) ( quando o relatório é exibido inicialmente ).
• 4 - Logo abaixo selecionei o box do item 'Display can be toogled by this report item :' (3) ( a exibição pode ser alternada pelo item ).
• 5-Selecionei o item 'Tipo' (4) que será o item que fará o chaveamento da exibição.
Portanto somente a primeira linha do item é exibido inicialmente e ao clicar no item 'tipo' todas as demais linhas dos campos 'escondidos' serão exibidas.

Clicando no [+] do tipo de produto da linha 'boné' as demais linhas de boné são exibidas. Veja como fica.

Conceitos fundamentais

Fazer os agregamentos e saber como fazer o agregamento correto é a chave do sucesso em muitos relatórios. Para que isto seja possível você precisa entender a nomenclatura do report server.

Linha de detalhes

Você vai pegar os dados de uma fonte de dados e exibir no relatório. Essas linhas de dados são as linhas de detalhes.

Linhas de totais

Podemos acrescentar as linhas de detalhes uma linha de total que pode ser :
• 1 - Uma linha de total geral, geralmente no final do relatório.
• 2 - Uma linha de total parcial feita por uma agregação escolhida.

Exemplificando, uma imagem fala mais que mil palavras:

A linha 1, com os 3 tracinhos horizontais é a linha de detalhes que contém os dados do relatório. Ela será repetida para cada linha de dados que a fonte de dados retornar.

A linha 2 é a linha de subtotal que é uma quebra feita por uma agregação ou grupo.

A linha 3 é a linha de total geral e contém a somatória de todos os itens exibidos na linha 1.

Como a agregação é feita

A maneira mais simples é na inserção do tablix via menu do report designer

Arraste o campo 'Tipo' para o box 'Row Groups' ( agrupamentos de linha ) e os demais campos para o box 'Values' que serão as linhas detalhes do nosso relatório. Portanto o campo 'Tipo' será um 'Agrupamento' e apartir desse agrupamento chavearemos a exibição da segunda linha em diante das linhas detalhe ( dados ) do relatório.

O report server não é simples e falta muita documentação decente de como trabalhar com ele.